# Rusty Enigma Machine Simulator

### Introduction
Enigma machine simulator. I don't think it mimics the functionality of any particular one, but I tried to give it most of the features that were commonly used.

This is an educational project for me to hone my rust skills and learn more cryptological history. I might try and write simulators for the various bombes that were used to aide decryption efforts.

Note that this encryption method barely worked in the 1930s and will certainly not work today.


### Background

Marian Rejewski was cool and smart as heck. Alan Turing was cool, too!

### Concept



### Usage

This program generates a set of rotors and a set of daily orders in `~/.config/rust* enigma/` or in the current directory if env::home_dir() fails. As of right now it won't actually read keys from anywhere but `~/.config/rust-enigma/` so if that doesn't work, you're out of luck until that functionality gets built in.

Pass the text you want to encrypt as an argument. This is currently the only way to pass text. Any non alphabetic character will be filtered out, and lowercase letters will be capitalized.

### Statistics

I haven't done any sort of analysis, so I'm not sure if this machine is working the way I think it is.

### Feature Wish List

Some of these are definitely going to happen.

* string as output.
* container of some kind for dailies
* arbitrary output formatting
* optional stdin -> stdout encryption, with arg flag?
* default rotor and daily configurations
* open files from command line
* read config_dir to prompt
* add new configs, don't erase old ones
* save default file names to defaults file
* conrod gui
* cli gui which displays all 3 rotor positions, reflector, and plugboard
* confirm that rotors are working as they should

### Config File Options:
* default dailies and rotors  - definitely do this
* reflector fixed or static - might be worth doing

